package data;

import java.util.Calendar;
import java.util.Objects;

public class Pessoa
{
	public static final int TAMANHO_MAX_NOME = 100;
	
	protected String cpf;
	protected String nome;
	protected Sexo sexo;
	protected Calendar dataNascimento;

	public Pessoa(){}

	public Pessoa(String cpf, String nome, Sexo sexo, Calendar dataNascimento) {
		this.cpf = cpf;
		this.nome = nome;
		this.sexo = sexo;
		this.dataNascimento = dataNascimento;
	}

	public String getCpf() {
		return cpf;
	}

	public void setCpf(String cpf) {
		this.cpf = cpf;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public Sexo getSexo() {
		return sexo;
	}

	public void setSexo(Sexo sexo) {
		this.sexo = sexo;
	}
	
	public Calendar getDataNascimento() {
		return dataNascimento;
	}

	public void setDataNascimento(Calendar dataNascimento) {
		this.dataNascimento = dataNascimento;
	}

	public boolean isHomem() {
		return( sexo == Sexo.MASCULUNO );
	}

	public boolean isMulher() {
		return( sexo == Sexo.FEMININO );
	}

	@Override
	public boolean equals(Object obj)
	{
		if( this == obj ) 
			return true;
		if( obj == null ) 
			return false;
		if( getClass() != obj.getClass() ) 
			return false;

		final Pessoa other = (Pessoa) obj;
		
		if ( !Objects.equals(this.cpf, other.cpf) )
			return false;
		
		if ( !Objects.equals(this.nome, other.nome) )
			return false;
		
		if ( this.sexo != other.sexo )
			return false;
		
		if ( !Objects.equals(this.dataNascimento, other.dataNascimento) )
			return false;
		
		return true;
	}

	@Override
	public int hashCode() {
		int hash = 5;
		hash = 37 * hash + Objects.hashCode(this.cpf);
		hash = 37 * hash + Objects.hashCode(this.nome);
		hash = 37 * hash + (this.sexo != null ? this.sexo.hashCode() : 0);
		hash = 37 * hash + Objects.hashCode(this.dataNascimento);
		return hash;
	}
}